package com.lulin.mall.ware.dao;

import com.lulin.mall.ware.entity.WareSkuEntity;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 商品库存
 *
 * @author lulin
 * @email 2032327049@qq.com
 * @date 2022-09-21 17:18:25
 */
@Mapper
public interface WareSkuDao extends BaseMapper<WareSkuEntity> {
    //根据商品id和库存id，更新库存
    void updateStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("skuNum") Integer skuNum);

    /**
     * 根据skuId，查询对应的库存信息（库存-锁定库存）
     */
    Long getSkuStock(Long skuId);

    /**
     * 根据skuId，查询出哪些仓库有库存
     *
     * @param skuId sku编号
     */
    List<WareSkuEntity> listHasStock(@Param("skuId") Long skuId);

    /**
     * 根据skuId,wareId，更新锁定库存
     *
     * @param skuId  sku编号
     * @param wareId 仓库编号
     * @param count  锁定的数量
     */
    Integer lockSkuStock(@Param("skuId") Long skuId, @Param("wareId") Long wareId, @Param("count") Integer count);
}
